package com.xingu.xg.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xingu.xg.common.consts.ComResult;
import com.xingu.xg.dal.domain.Category1;
import com.xingu.xg.dal.dto.Category1TreeNode;
import com.xingu.xg.dal.vo.Category1FormVo;
import com.xingu.xg.dal.vo.category.req.AddNodeQuery;
import com.xingu.xg.dal.vo.category.req.CopyNodeQuery;

import java.util.List;

/**
 * 如果是确定的最大深度=4级树结构就方便很多
 * 如果不是就是不确定最大层数就是 n叉树的层次遍历
 *
 * 先处理为 看到了4级但是方便改 先写成 不确定最大深度的n叉树
 */
public interface Category1Service {

    // base
    ComResult<Category1> create(Category1FormVo req);

    ComResult<Category1> deleteBatch(List<Long> id);


    List<Category1TreeNode> selectTree();

    /**
     * 通过分类列表组装成树形结构
     * @param source
     * @return
     */
    List<Category1TreeNode> buildTree(List<Category1> source);

    /**
     * 获取当前节点的所有的子树
     * @param id
     * @return
     */
    List<Category1> getChildCategoryList(Long id);


    ComResult<Category1> copyNodeFromId(CopyNodeQuery req);

    ComResult createSameLevel(Long curNodeId);

    ComResult createFatherAndSub(Long curNodeId);
}
